home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1999 July: Mac OS SDK / Dev.CD Jul 99 SDK1.toast / Development Kits / Mac OS / QuickDraw3D 1.6 SDK / Mac Interfaces / AIncludes / QD3DPick.a < prev    next >
Encoding:
Text File  |  1999-05-18  |  10.9 KB  |  384 lines  |  [TEXT/MPS ]

  1. ;
  2. ;    File:        QD3DPick.a
  3. ;
  4. ;    Contains:    Q3Pick methods                                    
  5. ;
  6. ;    Version:    Technology:    Quickdraw 3D 1.6
  7. ;                Release:    QuickTime 4.0
  8. ;
  9. ;    Copyright:    © 1995-1999 by Apple Computer, Inc., all rights reserved.
  10. ;
  11. ;    Bugs?:        For bug reports, consult the following page on
  12. ;                the World Wide Web:
  13. ;
  14. ;                    http://developer.apple.com/bugreporter/
  15. ;
  16. ;
  17.     IF &TYPE('__QD3DPICK__') = 'UNDEFINED' THEN
  18. __QD3DPICK__ SET 1
  19.  
  20.     IF &TYPE('__QD3D__') = 'UNDEFINED' THEN
  21.     include 'QD3D.a'
  22.     ENDIF
  23.  
  24.     IF &TYPE('__QD3DSTYLE__') = 'UNDEFINED' THEN
  25.     include 'QD3DStyle.a'
  26.     ENDIF
  27.     IF &TYPE('__QD3DGEOMETRY__') = 'UNDEFINED' THEN
  28.     include 'QD3DGeometry.a'
  29.     ENDIF
  30.  
  31. ; *****************************************************************************
  32. ; **                                                                            **
  33. ; **                            Mask bits for hit information                     **
  34. ; **                                                                            **
  35. ; ****************************************************************************
  36.  
  37.  
  38. ; typedef long                            TQ3PickDetailMasks
  39. kQ3PickDetailNone                EQU        0
  40. kQ3PickDetailMaskPickID            EQU        $01
  41. kQ3PickDetailMaskPath            EQU        $02
  42. kQ3PickDetailMaskObject            EQU        $04
  43. kQ3PickDetailMaskLocalToWorldMatrix EQU    $08
  44. kQ3PickDetailMaskXYZ            EQU        $10
  45. kQ3PickDetailMaskDistance        EQU        $20
  46. kQ3PickDetailMaskNormal            EQU        $40
  47. kQ3PickDetailMaskShapePart        EQU        $80
  48. kQ3PickDetailMaskPickPart        EQU        $0100
  49. kQ3PickDetailMaskUV                EQU        $0200
  50. ; typedef unsigned long                 TQ3PickDetail
  51.  
  52. ; ******************************************************************************
  53. ; **                                                                             **
  54. ; **                                Hitlist sorting                                 **
  55. ; **                                                                             **
  56. ; ****************************************************************************
  57.  
  58.  
  59. ; typedef long                            TQ3PickSort
  60. kQ3PickSortNone                    EQU        0
  61. kQ3PickSortNearToFar            EQU        1
  62. kQ3PickSortFarToNear            EQU        2
  63.  
  64. ; ******************************************************************************
  65. ; **                                                                             **
  66. ; **                    Data structures to set up the pick object                 **
  67. ; **                                                                             **
  68. ; ****************************************************************************
  69.  
  70. TQ3PickData                RECORD 0
  71. sort                     ds.l    1                ; offset: $0 (0)
  72. mask                     ds.l    1                ; offset: $4 (4)
  73. numHitsToReturn             ds.l    1                ; offset: $8 (8)
  74. sizeof                     EQU *                    ; size:   $C (12)
  75.                         ENDR
  76. TQ3WindowPointPickData    RECORD 0
  77. data                     ds        TQ3PickData        ; offset: $0 (0)
  78. point                     ds        TQ3Point2D        ; offset: $C (12)
  79. vertexTolerance             ds        Float32            ; offset: $14 (20)
  80. edgeTolerance             ds        Float32            ; offset: $18 (24)
  81. sizeof                     EQU *                    ; size:   $1C (28)
  82.                         ENDR
  83. TQ3WindowRectPickData    RECORD 0
  84. data                     ds        TQ3PickData        ; offset: $0 (0)
  85. rect                     ds        TQ3Area            ; offset: $C (12)
  86. sizeof                     EQU *                    ; size:   $1C (28)
  87.                         ENDR
  88. TQ3WorldRayPickData        RECORD 0
  89. data                     ds        TQ3PickData        ; offset: $0 (0)
  90. ray                         ds        TQ3Ray3D        ; offset: $C (12)
  91. vertexTolerance             ds        Float32            ; offset: $24 (36)
  92. edgeTolerance             ds        Float32            ; offset: $28 (40)
  93. sizeof                     EQU *                    ; size:   $2C (44)
  94.                         ENDR
  95.  
  96. ; ******************************************************************************
  97. ; **                                                                             **
  98. ; **                                    Hit data                                 **
  99. ; **                                                                             **
  100. ; ****************************************************************************
  101.  
  102. TQ3HitPath                RECORD 0
  103. rootGroup                 ds.l    1                ; offset: $0 (0)
  104. depth                     ds.l    1                ; offset: $4 (4)
  105. positions                 ds.l    1                ; offset: $8 (8)
  106. sizeof                     EQU *                    ; size:   $C (12)
  107.                         ENDR
  108. ; ******************************************************************************
  109. ; **                                                                             **
  110. ; **                                Pick class methods                             **
  111. ; **                                                                             **
  112. ; ****************************************************************************
  113.  
  114. ;
  115. ; extern TQ3ObjectType Q3Pick_GetType(TQ3PickObject pick)
  116. ;
  117.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  118.         IMPORT_CFM_FUNCTION Q3Pick_GetType
  119.     ENDIF
  120.  
  121. ;
  122. ; extern TQ3Status Q3Pick_GetData(TQ3PickObject pick, TQ3PickData *data)
  123. ;
  124.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  125.         IMPORT_CFM_FUNCTION Q3Pick_GetData
  126.     ENDIF
  127.  
  128. ;
  129. ; extern TQ3Status Q3Pick_SetData(TQ3PickObject pick, const TQ3PickData *data)
  130. ;
  131.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  132.         IMPORT_CFM_FUNCTION Q3Pick_SetData
  133.     ENDIF
  134.  
  135. ;
  136. ; extern TQ3Status Q3Pick_GetVertexTolerance(TQ3PickObject pick, float *vertexTolerance)
  137. ;
  138.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  139.         IMPORT_CFM_FUNCTION Q3Pick_GetVertexTolerance
  140.     ENDIF
  141.  
  142. ;
  143. ; extern TQ3Status Q3Pick_GetEdgeTolerance(TQ3PickObject pick, float *edgeTolerance)
  144. ;
  145.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  146.         IMPORT_CFM_FUNCTION Q3Pick_GetEdgeTolerance
  147.     ENDIF
  148.  
  149. ;
  150. ; extern TQ3Status Q3Pick_SetVertexTolerance(TQ3PickObject pick, float vertexTolerance)
  151. ;
  152.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  153.         IMPORT_CFM_FUNCTION Q3Pick_SetVertexTolerance
  154.     ENDIF
  155.  
  156. ;
  157. ; extern TQ3Status Q3Pick_SetEdgeTolerance(TQ3PickObject pick, float edgeTolerance)
  158. ;
  159.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  160.         IMPORT_CFM_FUNCTION Q3Pick_SetEdgeTolerance
  161.     ENDIF
  162.  
  163. ;
  164. ; extern TQ3Status Q3Pick_GetNumHits(TQ3PickObject pick, unsigned long *numHits)
  165. ;
  166.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  167.         IMPORT_CFM_FUNCTION Q3Pick_GetNumHits
  168.     ENDIF
  169.  
  170. ;
  171. ; extern TQ3Status Q3Pick_EmptyHitList(TQ3PickObject pick)
  172. ;
  173.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  174.         IMPORT_CFM_FUNCTION Q3Pick_EmptyHitList
  175.     ENDIF
  176.  
  177. ;
  178. ; extern TQ3Status Q3Pick_GetPickDetailValidMask(TQ3PickObject pick, unsigned long index, TQ3PickDetail *pickDetailValidMask)
  179. ;
  180.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  181.         IMPORT_CFM_FUNCTION Q3Pick_GetPickDetailValidMask
  182.     ENDIF
  183.  
  184. ;
  185. ; extern TQ3Status Q3Pick_GetPickDetailData(TQ3PickObject pick, unsigned long index, TQ3PickDetail pickDetailValue, void *detailData)
  186. ;
  187.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  188.         IMPORT_CFM_FUNCTION Q3Pick_GetPickDetailData
  189.     ENDIF
  190.  
  191. ;
  192. ; extern TQ3Status Q3HitPath_EmptyData(TQ3HitPath *hitPath)
  193. ;
  194.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  195.         IMPORT_CFM_FUNCTION Q3HitPath_EmptyData
  196.     ENDIF
  197.  
  198. ; ******************************************************************************
  199. ; **                                                                             **
  200. ; **                            Window point pick methods                         **
  201. ; **                                                                             **
  202. ; ****************************************************************************
  203.  
  204. ;
  205. ; extern TQ3PickObject Q3WindowPointPick_New(const TQ3WindowPointPickData *data)
  206. ;
  207.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  208.         IMPORT_CFM_FUNCTION Q3WindowPointPick_New
  209.     ENDIF
  210.  
  211. ;
  212. ; extern TQ3Status Q3WindowPointPick_GetPoint(TQ3PickObject pick, TQ3Point2D *point)
  213. ;
  214.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  215.         IMPORT_CFM_FUNCTION Q3WindowPointPick_GetPoint
  216.     ENDIF
  217.  
  218. ;
  219. ; extern TQ3Status Q3WindowPointPick_SetPoint(TQ3PickObject pick, const TQ3Point2D *point)
  220. ;
  221.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  222.         IMPORT_CFM_FUNCTION Q3WindowPointPick_SetPoint
  223.     ENDIF
  224.  
  225. ;
  226. ; extern TQ3Status Q3WindowPointPick_GetData(TQ3PickObject pick, TQ3WindowPointPickData *data)
  227. ;
  228.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  229.         IMPORT_CFM_FUNCTION Q3WindowPointPick_GetData
  230.     ENDIF
  231.  
  232. ;
  233. ; extern TQ3Status Q3WindowPointPick_SetData(TQ3PickObject pick, const TQ3WindowPointPickData *data)
  234. ;
  235.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  236.         IMPORT_CFM_FUNCTION Q3WindowPointPick_SetData
  237.     ENDIF
  238.  
  239.  
  240. ; ******************************************************************************
  241. ; **                                                                             **
  242. ; **                            Window rect pick methods                         **
  243. ; **                                                                             **
  244. ; ****************************************************************************
  245.  
  246. ;
  247. ; extern TQ3PickObject Q3WindowRectPick_New(const TQ3WindowRectPickData *data)
  248. ;
  249.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  250.         IMPORT_CFM_FUNCTION Q3WindowRectPick_New
  251.     ENDIF
  252.  
  253. ;
  254. ; extern TQ3Status Q3WindowRectPick_GetRect(TQ3PickObject pick, TQ3Area *rect)
  255. ;
  256.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  257.         IMPORT_CFM_FUNCTION Q3WindowRectPick_GetRect
  258.     ENDIF
  259.  
  260. ;
  261. ; extern TQ3Status Q3WindowRectPick_SetRect(TQ3PickObject pick, const TQ3Area *rect)
  262. ;
  263.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  264.         IMPORT_CFM_FUNCTION Q3WindowRectPick_SetRect
  265.     ENDIF
  266.  
  267. ;
  268. ; extern TQ3Status Q3WindowRectPick_GetData(TQ3PickObject pick, TQ3WindowRectPickData *data)
  269. ;
  270.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  271.         IMPORT_CFM_FUNCTION Q3WindowRectPick_GetData
  272.     ENDIF
  273.  
  274. ;
  275. ; extern TQ3Status Q3WindowRectPick_SetData(TQ3PickObject pick, const TQ3WindowRectPickData *data)
  276. ;
  277.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  278.         IMPORT_CFM_FUNCTION Q3WindowRectPick_SetData
  279.     ENDIF
  280.  
  281.  
  282. ; ******************************************************************************
  283. ; **                                                                             **
  284. ; **                            World ray pick methods                             **
  285. ; **                                                                             **
  286. ; ****************************************************************************
  287.  
  288. ;
  289. ; extern TQ3PickObject Q3WorldRayPick_New(const TQ3WorldRayPickData *data)
  290. ;
  291.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  292.         IMPORT_CFM_FUNCTION Q3WorldRayPick_New
  293.     ENDIF
  294.  
  295. ;
  296. ; extern TQ3Status Q3WorldRayPick_GetRay(TQ3PickObject pick, TQ3Ray3D *ray)
  297. ;
  298.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  299.         IMPORT_CFM_FUNCTION Q3WorldRayPick_GetRay
  300.     ENDIF
  301.  
  302. ;
  303. ; extern TQ3Status Q3WorldRayPick_SetRay(TQ3PickObject pick, const TQ3Ray3D *ray)
  304. ;
  305.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  306.         IMPORT_CFM_FUNCTION Q3WorldRayPick_SetRay
  307.     ENDIF
  308.  
  309. ;
  310. ; extern TQ3Status Q3WorldRayPick_GetData(TQ3PickObject pick, TQ3WorldRayPickData *data)
  311. ;
  312.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  313.         IMPORT_CFM_FUNCTION Q3WorldRayPick_GetData
  314.     ENDIF
  315.  
  316. ;
  317. ; extern TQ3Status Q3WorldRayPick_SetData(TQ3PickObject pick, const TQ3WorldRayPickData *data)
  318. ;
  319.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  320.         IMPORT_CFM_FUNCTION Q3WorldRayPick_SetData
  321.     ENDIF
  322.  
  323.  
  324.  
  325. ; ******************************************************************************
  326. ; **                                                                             **
  327. ; **                                Shape Part methods                             **
  328. ; **                                                                             **
  329. ; ****************************************************************************
  330.  
  331. ;
  332. ; extern TQ3ObjectType Q3ShapePart_GetType(TQ3ShapePartObject shapePartObject)
  333. ;
  334.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  335.         IMPORT_CFM_FUNCTION Q3ShapePart_GetType
  336.     ENDIF
  337.  
  338. ;
  339. ; extern TQ3ObjectType Q3MeshPart_GetType(TQ3MeshPartObject meshPartObject)
  340. ;
  341.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  342.         IMPORT_CFM_FUNCTION Q3MeshPart_GetType
  343.     ENDIF
  344.  
  345. ;
  346. ; extern TQ3Status Q3ShapePart_GetShape(TQ3ShapePartObject shapePartObject, TQ3ShapeObject *shapeObject)
  347. ;
  348.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  349.         IMPORT_CFM_FUNCTION Q3ShapePart_GetShape
  350.     ENDIF
  351.  
  352. ;
  353. ; extern TQ3Status Q3MeshPart_GetComponent(TQ3MeshPartObject meshPartObject, TQ3MeshComponent *component)
  354. ;
  355.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  356.         IMPORT_CFM_FUNCTION Q3MeshPart_GetComponent
  357.     ENDIF
  358.  
  359. ;
  360. ; extern TQ3Status Q3MeshFacePart_GetFace(TQ3MeshFacePartObject meshFacePartObject, TQ3MeshFace *face)
  361. ;
  362.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  363.         IMPORT_CFM_FUNCTION Q3MeshFacePart_GetFace
  364.     ENDIF
  365.  
  366. ;
  367. ; extern TQ3Status Q3MeshEdgePart_GetEdge(TQ3MeshEdgePartObject meshEdgePartObject, TQ3MeshEdge *edge)
  368. ;
  369.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  370.         IMPORT_CFM_FUNCTION Q3MeshEdgePart_GetEdge
  371.     ENDIF
  372.  
  373. ;
  374. ; extern TQ3Status Q3MeshVertexPart_GetVertex(TQ3MeshVertexPartObject meshVertexPartObject, TQ3MeshVertex *vertex)
  375. ;
  376.     IF TARGET_OS_MAC ** TARGET_RT_MAC_CFM THEN
  377.         IMPORT_CFM_FUNCTION Q3MeshVertexPart_GetVertex
  378.     ENDIF
  379.  
  380.  
  381.  
  382.     ENDIF ; __QD3DPICK__ 
  383.  
  384.